最一開始要先來了解一下編碼,你輸入的資料電腦會轉換成二進制,像是010101,而操作完再解碼,轉換成你看得懂的資料,而中文的編碼是使用萬國碼(Unicode)裡的 utf-8。
f = open("a.txt", "w", encoding="utf-8") # 開檔, "w"是寫入模式
f.write("abcd\n1234") # \n: 換行 \t: TAB
f.close() # 關檔
你就會看到旁邊多了一個a.txt的檔案,裡面的內容是
abcd
1234
f = open("a.txt", "r", encoding="utf-8") # 開檔
s = f.read() # 讀檔
print(s)
f.close()
程式會讀取名叫a.txt的檔案,並列印出裡面的內容。
程式其實有分事前預防跟事後處理,事前預防就是之前有講到過的if-else,讓不同的情況有不同的處理方式,今天要學習的是try-except,其實也非常的簡單而且很常用到。
當發生錯誤的程式碼被執行之後,就會執行第三行except處理錯誤。
try:
可能會發生錯誤的程式碼
except XXXError:
事後補救程式碼
那如果
try:
line1
line2
except Error1: # 如果遇到Error1
solution1 # 執行這裡的解決方案
solution2
except Error2: # 如果遇到Error2
solution1 # 執行這裡的解決方案
solution2
這個程式碼有可能遇到三種狀況
另外,在爬蟲的時候會需要看它的網頁原始碼,所以想要成功爬到你要的資料至少得看得懂簡單的html。
HTML格式: 區塊(長方形), 也就是說整個網頁是由一塊一塊的長方形來構成的,大的長方形裡面還有很多小的長方形。如果想要定義區塊一開始要先有<>,裡面放上你要用的格式名字,這個區塊結束是則是</>再加上你的格式名字。
<名字 屬姓名="值" 屬姓名="值"> # start
文字
</名字> # end
但HTML只是定義網頁內容,一個完整的網頁還需要兩個幫手,分別是CSS和JavaScript。CSS是來幫網頁排版,而有些網頁是會動的,像是點什麼東西會出現什麼或是什麼東西消失,總之讓網頁變成動態的,這時就是用JavaScript。這邊也要了解一下網頁的排版,在抓想要的內容時,像是我都想要商品的英文名稱,不可能抓所有的超連結,如果要定位我想要的內容就必須靠排版,你會發現通常這些都會有一致的排版,所以要稍微研究一下CSS可以幫助我們抓取需要的資料。
CSS語法只做一件事情,就是定位元素並且加上排版,而今天講一個最簡單的定位方式。
假設我想要定位所有的超連結(a),並把它的背景都變成紅色。
a{ # 定位到所有名字有a的
background-color:red; # 排版背景顏色,定義為紅色
xxxx:xxxx; # 還可以制定其他的規則
}
但有時候並不是要所有的超連結,我可能只要圖片的超連結,或是下一頁的超連結。為了分開我需要的東西,在CSS語法中會有兩個特殊的屬性,是自己加上去的,每一個區塊都可以加,來讓劃分想要的資料跟其他區塊。
# class="分類1 分類2"
<a class="xyz">
在CSS語法如果你要用class選擇的話要先打一個.
.xyz{
... # 裡面就可以設定
}
# id="值"
<a id="bcdef"
如果用class做選擇要先打.,如果要用id做選擇則是前面加上#
#bcdef{
... # 裡面就可以設定
}
另外這邊先介紹幾個HTTP的代碼,之後爬蟲時會用到的~
2(成功): 200
3(轉址)
4(錯誤):
400(Bad Request)
404(Not Found)